package com.yan.club.result;

/**
 * @description 响应码枚举，参考 HTTP状态码的语义
 */

/**
 * @author : 彦
 * @since : 2023/11/14 14:37
 * 响应码枚举，参考 HTTP 状态码的语义
 */
public enum ResultCode {
    /**
     * 成功
     */
    SUCCESS(200),
    /**
     * 失败
     */
    FAIL(400),

    /**
     * 未认证（签名错误）
     */
    UNAUTHORIZED(401),

    /**
     * 认证失败
     */
    AUTHENTICATION_FAILED(403),

    /**
     * 接口不存在
     */
    NOT_FOUND(404),

    /**
     * 服务器内部错误
     */
    INTERNAL_SERVER_ERROR(500, "系统错误。"),

    /**
     * token不存在
     */
    TOKENULLException(5002, "token为空"),

    /**
     * token过期
     */
    TOKEN_EXPIRED(5000, "会话已过期，请重新登陆。"),
    /**
     * 密码错误
     */
    LOGIN_FAIL(5001),
    /**
     * 无效参数(You passed an invalid argument)
     */
    INVALID_ARGUMENT(1001),
    /**
     * 重复登录
     */
    DUPLICATE_LOGIN(1002),
    /**
     * 密码错误
     */
    INVALID_PASSWORD(1003),
    /**
     * 用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小，则该索引为非法索引。
     */
    ArrayIndexOutOfBoundsException(2001, "数组索引越界异常"),
    /**
     * 试图将错误类型的对象存储到一个对象数组时抛出的异常。
     */
    ArrayStoreException(2002, "数组存储异常"),
    /**
     * 当试图将对象强制转换为不是实例的子类时，抛出该异常。
     */
    ClassCastException(2003, "类转换异常"),
    /**
     * 抛出的异常表明向方法传递了一个不合法或不正确的参数。
     */
    IllegalArgumentException(2004, "传递参数异常"),
    /**
     * 抛出的异常表明某一线程已经试图等待对象的监视器，或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
     */
    IllegalMonitorStateException(2005, "违法的监控状态异常"),
    /**
     * 在非法或不适当的时间调用方法时产生的信号。换句话说，即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。
     */
    IllegalStateException(2006, "违法的状态异常"),
    /**
     * 线程没有处于请求操作所要求的适当状态时抛出的异常。
     */
    IllegalThreadStateException(2007, "违法的线程状态异常"),
    /**
     * 指示某排序索引（例如对数组、字符串或向量的排序）超出范围时抛出。
     */
    IndexOutOfBoundsException(2008, "索引超出范围异常"),
    /**
     * 如果应用程序试图创建大小为负的数组，则抛出该异常。
     */
    NegativeArraySizeException(2009, "数组负下标异常"),
    /**
     * 当应用程序试图在需要对象的地方使用 null 时，抛出该异常
     */
    NullPointerException(2010, "空指针异常"),
    /**
     * 当应用程序试图将字符串转换成一种数值类型，但该字符串不能转换为适当格式时，抛出该异常。
     */
    NumberFormatException(2011, "字符串转换为数字异常"),
    /**
     * 由安全管理器抛出的异常，指示存在安全侵犯。
     */
    SecurityException(2012, "安全异常"),
    /**
     * 此异常由 String 方法抛出，指示索引或者为负，或者超出字符串的大小。
     */
    StringIndexOutOfBoundsException(2013, "下标越界异常"),
    /**
     * 当不支持请求的操作时，抛出该异常。
     */
    UnsupportedOperationException(2014, "请求异常"),
    /**
     * 当出现异常的运算条件时，抛出此异常。例如，一个整数"除以零"时，抛出此类的一个实例。
     */
    ArithmeticException(2015, "算术异常"),
    /**
     * 找不到类异常
     */
    CLASS_NOTFOUND(2016, "找不到类异常"),
    /**
     * 克隆异常
     */
    CLONE_NOT_SUPPORTED(2017, "克隆异常"),
    /**
     * 拒绝访问类异常
     */
    ILLEGAL_ACCESS(2018, "拒绝访问类异常"),
    /**
     * 实例化异常
     */
    INSTANTIA_EXC(2019, "实例化异常"),
    /**
     * 线程中断异常
     */
    INTERRUPTED_EXC(2020, "线程中断异常"),
    /**
     * 请求的变量不存在
     */
    NO_SUCH_FIELD(2021, "请求的变量不存在"),
    /**
     * 请求的方法不存在
     */
    NO_SUCH_METHOD(2022, "请求的方法不存在"),
    /**
     * 数据库异常
     */
    SQL_EXCEPTION(2023, "数据库异常"),
    /**
     * 输入输出异常
     */
    IO_EXCEPTION(2024, "输入输出异常"),
    /**
     * 算术异常
     */
    ARITHMETIC_EXCEPTION(2025, "算术异常"),
    /**
     * 文件已结束异常
     */
    EOF_EXCEPTION(2026, "文件已结束异常"),
    /**
     * 文件未找到异常
     */
    FILE_NOT_FOUND(2027, "文件未找到异常"),
    /**
     * 断言失败异常
     */
    ASSERTION_EXCEPTION(2028, "断言失败异常"),
    /**
     * 类型不存在异常
     */
    TYPE_NOT_PRESENT(2029, "类型不存在异常"),
    /**
     * 数据库语法异常
     */
    SQL_SYNTAX_EXC(2030, "数据库语法异常"),
    /**
     * 若某个注释的类型在对该注释进行编译（或序列化）后发生了更改，而程序试图访问该注释的元素时，抛出此异常。
     */
    ANNOTATION_TYPE_MISMATCH(2031, "若某个注释的类型在对该注释进行编译（或序列化）后发生了更改，而程序试图访问该注释的元素时，抛出此异常"),
    /**
     * 当相关 put 操作达到目标缓冲区限制时，抛出此未经检查的异常。
     */
    BUFFER_OVERFLOW(2032, "当相关 put 操作达到目标缓冲区限制时，抛出此未经检查的异常"),
    /**
     * 当相关 get 操作达到源缓冲区限制时，抛出此未经检查的异常。
     */
    BUFFER_UNDERFLOW(2033, "当相关 get 操作达到源缓冲区限制时，抛出此未经检查的异常"),
    /**
     * 当方法检测到对象的并发修改，但不允许这种修改时，抛出此异常。
     */
    CONCURRENT_MODIFY(2034, "当方法检测到对象的并发修改，但不允许这种修改时，抛出此异常"),
    /**
     * 该异常由 Stack 类中的方法抛出，以表明堆栈为空。
     */
    EMPTY_STACK(2035, "该异常由 Stack 类中的方法抛出，以表明堆栈为空"),
    /**
     * 当应用程序试图通过名称和枚举类型访问那些不包含具有指定名称的常量的枚举常量时，抛出该异常。
     */
    ENUM_NOTPRESENT(2036, "当应用程序试图通过名称和枚举类型访问那些不包含具有指定名称的常量的枚举常量时，抛出该异常"),
    /**
     * 抛出的异常表明某一线程已经试图等待对象的监视器，或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
     */
    ILLEGAL_MONITOR_STATE(2037, "抛出的异常表明某一线程已经试图等待对象的监视器，或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程"),
    /**
     * 在非法或不适当的时间调用方法时产生的信号。换句话说，即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下
     */
    ILLEGAL_STATE(2038, "在非法或不适当的时间调用方法时产生的信号。换句话说，即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下"),
    /**
     * 若某个注释在编译（或序列化）后将某个注释类型添加到其类型定义中，而程序试图该注释类型的元素时，抛出此异常。如果新元素有默认值，则不抛出此异常。
     */
    INCOMPLETE_ANNOTATION(2039, "若某个注释在编译（或序列化）后将某个注释类型添加到其类型定义中，而程序试图该注释类型的元素时，抛出此异常"),
    /**
     * 由 JMX 实现所发出的运行时异常。
     */
    JMRUNTIME_EXCEPTION(2040, "由 JMX 实现所发出的运行时异常"),
    /**
     * 当反射方法遇到语义错误的参数化类型，而反射方法需要实例化该类型时，抛出该异常。例如，如果参数化类型的类型参数错误。
     */
    MALFORMED_PARAMETER_TYPE(2041, "当反射方法遇到语义错误的参数化类型，而反射方法需要实例化该类型时，抛出该异常"),
    /**
     * 当应用程序试图访问对应于 TypeMirror 的 Class 对象时，抛出此异常。
     */
    MIRROR_TYPE_EXC(2042, "当应用程序试图访问对应于 TypeMirror 的 Class 对象时，抛出此异常"),
    /**
     * 缺少资源时抛出此异常。
     */
    MISSING_RESOURCES(2043, "缺少资源异常"),
    /**
     * 由 Enumeration 的 nextElement 方法抛出，表明枚举中没有更多的元素。
     */
    NOSUCH_ELEMENT(2044, "枚举中没有更多的元素"),
    /**
     * 当请求特定 XML 机制但该机制在环境中不可用时，抛出此异常。
     */
    NOSUCH_MECHANISM(2045, "当请求特定 XML 机制但该机制在环境中不可用时，抛出此异常"),
    /**
     * 用于 Provider 异常(例如误配置错误或不可恢复的内部错误）的运行时异常，Provider 可以为它创建子类以抛出特殊的、特定于 provider 的运行时错误。
     */
    PROVIDER_EXCEPTION(2046, "用于 Provider 异常(例如误配置错误或不可恢复的内部错误）的运行时异常，Provider 可以为它创建子类以抛出特殊的、特定于 provider 的运行时错误"),
    /**
     * 当无法执行某个任务时,由 Executor 抛出的异常。
     */
    REJECT_EXECUTION(2047, "当无法执行某个任务时,由 Executor 抛出的异常"),
    /**
     * 指示遇到一个未知种类的注释值。如果语言有所发展并且新种类的注释值可以存储在注释中，则会发生这种情况。
     */
    UNKNOWN_ANNOTATION(2048, "指示遇到一个未知种类的注释值。如果语言有所发展并且新种类的注释值可以存储在注释中，则会发生这种情况"),
    /**
     * 指示遇到未知种类的类型。如果语言有所发展并且向 TypeMirror 层次结构中添加了新种类的类型，则会发生这种情况。
     */
    UNKNOWN_TYPE(2049, "指示遇到未知种类的类型。如果语言有所发展并且向 TypeMirror 层次结构中添加了新种类的类型，则会发生这种情况"),
    /**
     * WebServiceException 类是所有 JAX-WS API 运行时异常的基本异常类。
     */
    WEB_SERVICE_EXC(2050, "WEB服务异常"),
    /**
     * 抛出该异常表明由于内部存储故障或者不能联系内部存储而无法完成 preferences 操作。
     */
    BACKING_STORE_EXC(2051, " 抛出该异常表明由于内部存储故障或者不能联系内部存储而无法完成 preferences 操作"),
    /**
     * 向构造的查询方法传递无效的 MBean 属性时，抛出此异常。在查询计算期间，由 JMX 在内部使用此异常。用户代码通常无法看到它。
     */
    BAD_ATTRIBUTE_EXC(2052, "向构造的查询方法传递无效的 MBean 属性时，抛出此异常"),
    /**
     * 向构造查询的方法传递无效的表达式时，抛出此异常。在查询计算期间，由 JMX 在内部使用此异常。用户代码通常无法看到它。
     */
    BAD_BINARYOP_EXC(2053, "向构造查询的方法传递无效的表达式时，抛出此异常"),
    /**
     * 向构造查询的方法传递无效的字符串操作时，抛出此异常。
     */
    BAD_STRING_EXC(2054, "向构造查询的方法传递无效的字符串操作时，抛出此异常"),
    /**
     * 当某个线程试图等待处于断开状态的 barrier 时，或者 barrier 进入断开状态而线程处于等待状态时，抛出该异常。
     */
    BROBEN_BARRIER_EXC(2055, "当某个线程试图等待处于断开状态的 barrier 时，或者 barrier 进入断开状态而线程处于等待状态时，抛出该异常"),
    /**
     * 当数据格式发生错误时，抛出此异常。
     */
    DATA_FORMAT_EXC(2056, "当数据格式发生错误时，抛出此异常"),
    /**
     * 指示严重的配置错误。
     */
    CONFIG_EXCEPTION(2057, "指示严重的配置错误"),
    /**
     * 当试图获取已通过抛出异常而中止的任务的结果时，抛出此异常。可以使用 Throwable.getCause() 方法来检查此异常。
     */
    EXECUTION_EXCEPTION(2058, "当试图获取已通过抛出异常而中止的任务的结果时，抛出此异常。可以使用 Throwable.getCause() 方法来检查此异常"),
    /**
     * 当其输入参数无效时，由 ClassFileTransformer.transform 的实现抛出该异常。抛出此异常的原因或者由于初始类文件字节无效，或者由于以前应用的转换损坏了字节。
     */
    ILLEGAL_CLASSFORMAT_EXC(2059, "当其输入参数无效时，由 ClassFileTransformer.transform 的实现抛出该异常。抛出此异常的原因或者由于初始类文件字节无效，或者由于以前应用的转换损坏了字节"),
    /**
     * 在 Introspection 期间发生异常时抛出异常。典型的 cause 包括：无法将字符串类名称映射到 Class 对象、无法解析字符串方法名，或者指定对其用途而言具有错误类型签名的方法名称。
     */
    INTROSPECT_EXC(2060, "在 Introspection 期间发生异常时抛出异常"),
    /**
     * 当指定了无效的目标对象类型时，抛出此异常。
     */
    INVALID_TARGETOBJ_TYPE(2061, "当指定了无效的目标对象类型时，抛出此异常"),
    /**
     * InvocationTargetException 是一种包装由调用方法或构造方法所抛出异常的经过检查的异常
     */
    INVOCATION_TARGET_EXC(2062, "InvocationTargetException 是一种包装由调用方法或构造方法所抛出异常的经过检查的异常"),
    /**
     * 这是所有 JAXB 异常的根异常类
     */
    JAXBE_EXCEPTION(2063, "这是所有 JAXB 异常的根异常类"),
    /**
     * 表示解析时出现意外错误。
     */
    PARSE_EXCEPTION(2064, "表示解析时出现意外错误"),
    /**
     * 脚本 API 的一般 Exception 类
     */
    SCRIPT_EXCEPTION(2065, "脚本 API 的一般 Exception 类"),
    /**
     * 如果在服务于远程方法调用之外调用 getClientHost 方法，则 ServerNotActiveException 是在调用 RemoteServer.getClientHost 的过程中抛出的 Exception。
     */
    SERVER_NOTACTIVE(2066, "如果在服务于远程方法调用之外调用 getClientHost 方法，则 ServerNotActiveException 是在调用 RemoteServer.getClientHost 的过程中抛出的 Exception"),
    /**
     * 当发生 SOAP 异常时，抛出此异常。
     */
    SOAP_EXCEPTION(2067, "当发生 SOAP 异常时，抛出此异常"),
    /**
     * 阻塞操作超时时，抛出该异常
     */
    TIMEOUT_EXCEPTION(2068, "阻塞操作超时时，抛出该异常"),
    /**
     * 在 CallbackHandler 不能识别特定的 Callback 时发出的信号。
     */
    UNSUPPORT_CALLBACK_EXC(2069, "在 CallbackHandler 不能识别特定的 Callback 时发出的信号"),
    /**
     * 当将某个 XML 格式的字符串解析为 ModelMBean 对象，或从 ModelMBean 对象创建 XML 格式的字符串时，抛出此异常。
     */
    XMLPARSE_EXCEPTION(2070, "当将某个 XML 格式的字符串解析为 ModelMBean 对象，或从 ModelMBean 对象创建 XML 格式的字符串时，抛出此异常"),

    /**
     * AcrossServiceException 类是跨服务调用  运行时异常的基本异常类。
     */
    ACROSS_SERVICE_EXC(2071, "远程调用服务异常"),

    /**
     * JSONException类是转换json对象异常  运行时异常的基本异常类。
     */
    JSON_EXCEPTION(2072, "转换json对象异常"),

    /**
     * ClientHandlerException类是连接异常  运行时异常的基本异常类。
     */
    CLIENT_HANDLER_EXCEPTION(2073, "连接异常"),

    FEIGN_EXCEPTION(2074, "feigin调用异常"),

    /**
     * MySQL数据库异常
     */
    MYSQL_DATA_EXCEPTION(2075, "数据异常"),

    MYSQL_INTEGRITY_CONSTRAINT_VIOLATION_EXCEPTION(2076, "违反了数据库的完整性约束，在表中建立了唯一索引"),

    MYSQL_SYNTAX_ERROR_EXCEPTION(2077, "语法错误异常");

    public int code;
    public String msg;

    ResultCode(int code) {
        this.code = code;
    }

    ResultCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

}
